<?php
/**
 * Created by PhpStorm.
 * User: yuanxr
 * Date: 2018/6/10
 * Time: 上午8:35
 */

namespace Utility\Test;
use Utility\Output\Result;
use Utility\Get;
/**********************************************************************************************************************
 * /restful：如果本页面get参数中，带有action参数
 **********************************************************************************************************************/
class Restful
{
    private $_Result;
    private $_Get;

    function __construct(){
        $this->_Result = new Result();
        $this->_Get = new Get();
    }

    /**
     * get
     * @param string $param 要get的参数
     * @param string $default 默认的要获取的值
     * 
     */
    public function get(string $param, string $default = '') {
        $result = $_GET[$param] ?? $default;
        return trim(strip_tags(htmlspecialchars($result)));
    }

    /**
	 * working
	 *
	 * @return void 必须在restful页面手动调用，否则会出现常量不能全局使用等问题
	 */      
	public function working($allow_domain) {
		if ($this->get('action')) { 
			// 输出为json格式
			header('Content-type: application/json');
			// 设置可访问域名
			if (isset($allow_domain)) {
				if (is_array($allow_domain)) {
					foreach ($allow_domain as $k=>$v) {
						header('Access-Control-Allow-Origin: ' . $v);
					}
				} else {
					header('Access-Control-Allow-Origin: ' . $allow_domain);
				}
            }
			// Restful反射接口，得到接口全称
            $action = $this->_Get->method() . '_' .$this->get('action');
			// 如果接口存在，则调用接口
			if (function_exists($action)) {
                $action();
			} 
			// 否则返回该接口不存在
			else {
				$this->_Result->eNoInterface();
			}
			// 结束程序运行
			exit;
		}
	}
}